package com.bblei.demo.leetcode;

import java.util.HashMap;
import java.util.Map;

public class LeetCodeTop_1 {

    public static int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i< nums.length; i++) {
            if (map.containsKey(nums[i])) {
                return new int[]{map.get(nums[i]), i};
            }
            // 因为每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现.不考虑多解或者重复的情况. 只会存在一个有效答案
            // map中存放的key: target - 当前的数组中的值。
            // 这样每次遍历进来的时候 如果当前的值 在map 的 key 中.那么 currentValue = target - 之前的数组中的值。那么 target = currentValue + 之前的数组中的值
            // value：当前数组中的值的index。为啥是index 因为题目要求是返回对应的index
            map.put(target - nums[i], i);
        }
        // nums为空
        return  new int[]{};
    }



    public static void main(String[] args) {
        //https://leetcode.cn/problems/two-sum/description/?envType=study-plan-v2&envId=top-100-liked

         int[] nums = new int[]{2, 7, 11, 15};
         int target = 9;
//        int[] nums = new int[]{3, 2, 4};
//        int target = 6;
         int[] sum = twoSum(nums, target);
         for (int i = 0;i< sum.length;i++) {
             System.out.println(sum[i]);
         }

    }
}
